package news.aggregator;

import java.net.URL;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.CharacterData;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

public class RSSReader {

	private static RSSReader instance = null;

	private RSSReader() {
	}

	public static RSSReader getInstance() {
		if (instance == null)
			instance = new RSSReader();
		return instance;
	}

	public void writeNews() {
		try {

			DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
		
			// URL u = new URL("http://news.google.com/news?pz=1&cf=all&ned=us&hl=en&q=telugu&cf=all&output=rss"); // your feed
			// URL u = new URL("http://www.vaartha.com/rss/tera-196.rss");
			// URL u = new URL("http://www.greatandhra.com/rss/rss.xml");
			URL u = new URL("http://news.search.yahoo.com/news/rss?p=andhra&ei=UTF-8&fl=0&x=wrt");
			
				
			Document doc = builder.parse(u.openStream());
			NodeList nodes = doc.getElementsByTagName("item");

			for (int i = 0; i < nodes.getLength(); i++) {
				Element element = (Element) nodes.item(i);
				System.out.println("Title: "+ getElementValue(element, "title"));
				System.out.println("Link: " + getElementValue(element, "link"));
				System.out.println("Publish Date: "+ getElementValue(element, "pubDate"));

				System.out.println("Author: "+ getElementValue(element, "dc:creator"));
				System.out.println("Description: "+ getElementValue(element, "description"));
				System.out.println();

			}// for
		}// try

		catch (Exception ex) {
			ex.printStackTrace();
		}
	}

	private String getCharacterDataFromElement(Element e) {
		try {
			Node child = e.getFirstChild();
			if (child instanceof CharacterData) {
				CharacterData cd = (CharacterData) child;
				return cd.getData();
			}
		} catch (Exception ex) {
		}
		return "";
	} // private String getCharacterDataFromElement

	protected float getFloat(String value) {

		if (value != null && !value.equals(""))
			return Float.parseFloat(value);
		else
			return 0;
	}

	protected String getElementValue(Element parent, String label) {
		return getCharacterDataFromElement((Element) parent.getElementsByTagName(label).item(0));
	}

	public static void main(String[] args) {
		RSSReader reader = RSSReader.getInstance();
		reader.writeNews();
	}
}